var FONT_WIDTH=15;
/**
 * 数据获取的URL
 * @returns
 */
function getDataUrl(){
	return window.location;
}

/**
 * 更新DOM
 * @param json
 * @returns {Number}
 */
function doDOM(json){
	var returnSize=0;
	var list=$("#list");
	$.each(json.items,function(idx,item){
		returnSize=idx+1;
		var tr = generate_row(item);
		list.append(tr);
	});
	return returnSize;
}

/**
 * 返回页面是否填充满
 * @returns {Boolean}
 */
function isFilled(){
	return (($(window).height+300)<$("#news_list").height);
}

/**
 * 根据json生成一行
 * @param item
 * @returns
 */
function generate_row(item){
	var ws=getWidths();
	var tr = $(document.createElement("tr"));
	var td1 = $(document.createElement("td"));
	var td2 = $(document.createElement("td"));
	var td3 = $(document.createElement("td"));
	var td4 = $(document.createElement("td"));
	td1.html(cutShort(item.key,ws[0]/FONT_WIDTH));
	td2.html(cutShort(item.value,ws[1]/FONT_WIDTH));
	td3.html(cutShort(item.remark,ws[2]/FONT_WIDTH));
	td1.attr("title",item.key);
	td1.data("ori_data",item.key);
	td1.data("new_data",item.key);
	bindTdFunction(td2, item.value);
	bindTdFunction(td3, item.remark);
	td4.html("<a href=\"javascript:void(0)\"" +
			" onclick=\"update(this)\">更新</a>\n"+
			"&nbsp;&nbsp;&nbsp;&nbsp;\n"+
			"<a href=\"javascript:void(0)\"" +
			" onclick=\"deleteItem(this)\">删除</a>");
	tr.append(td1);
	tr.append(td2);
	tr.append(td3);
	tr.append(td4);
	return tr;
}

/**
 * 获取宽度
 * @returns {Array}
 */
function getWidths(){
	var widths=new Array();
	$("#list th").each(
		function (i,o){
			widths[i]=$(o).width();
		}
	);
	return widths;
}

/**
 * 绑定函数
 * @param td
 * @param data
 * @param refresh
 */
function bindTdFunction(td,data,refresh){
	if(td.data("ori_data")==undefined&&refresh!=true)
		td.data("ori_data",data);
	td.attr("title",data);
	td.data("new_data",data);
	td.one("click",function(){
		editTable(this);
	});
}

/**
 * 缩短字符串,使其能在表格中显示
 * @param str
 * @param length
 * @returns
 */
function cutShort(str,length){
	if(str.length>length){
		return str.substring(0,length)+"...";
	}
	return str;
}

/**
 * 使表格变为可编辑的
 * @param obj
 */
function editTable(obj){
	var td = $(obj);
	var input = $(document.createElement("input"));
	td.html("");
	td.append(input);
	input.css("height",td.height()-4);
	input.css("width",td.width()-10);
	input.attr("value",td.data("new_data"));
	input.focus();
	input.select();
	input.blur(
		function(){
			var input= $(this);
			var td=input.parent();
			td.html(cutShort(input.val(),td.width()/FONT_WIDTH));
			input.detach();
			bindTdFunction(td,input.val());
		}
	);
	input.keypress(
			function(e){
				if(e.which==13){
					$(this).blur();
					return false;
				}
				return true;
			}
		);
}

/**
 * 新增一行，用于插入数据
 */
function newRow(){
	var tr = $(document.createElement("tr"));
	var td1 = $(document.createElement("td"));
	var td2 = $(document.createElement("td"));
	var td3 = $(document.createElement("td"));
	var td4 = $(document.createElement("td"));
	td1.html("");
	td2.html("");
	td3.html("");
	bindTdFunction(td1, "");
	bindTdFunction(td2, "");
	bindTdFunction(td3, "");
	td4.html("<a href=\"javascript:void(0)\"" +
			" onclick=\"update(this)\">更新</a>\n"+
			"&nbsp;&nbsp;&nbsp;&nbsp;\n"+
			"<a href=\"javascript:void(0)\"" +
			" onclick=\"deleteItem(this)\">删除</a>");
	tr.append(td1);
	tr.append(td2);
	tr.append(td3);
	tr.append(td4);
	var th=$($("#list tr th")[0]).parent();
	//新增数据标示
	tr.data("isNew",true);
	$(th).after(tr);
}

/**
 * 更新数据
 * @param obj
 */
function update(obj){
	var tds=$(obj).parent().parent().children();
	$.ajax({
		url : "admin/system/config/edit/",
		type : 'POST',
		dataType : 'text',
		timeout : 2000,
		loader:"",
		context:tds,
		data:jQuery.param({"key":$(tds[0]).data("new_data"),
			"value":$(tds[1]).data("new_data"),
			"remark":$(tds[2]).data("new_data")}),
		error:function(){
			alert("更新失败");
		},
		success:function(txt){
			if (txt!='200'){
				alert(txt);
				return;
			}
			var tds=this;
			
			bindTdFunction($(tds[0]),$(tds[0]).data("new_data"),true);
			bindTdFunction($(tds[1]),$(tds[1]).data("new_data"),true);
			bindTdFunction($(tds[2]),$(tds[2]).data("new_data"),true);
			$(tds[0]).parent().data("isNew",false);//去处新标示
			$(tds[0]).unbind();
		}
	});
}

/**
 * 删除数据
 * @param obj
 */
function deleteItem(obj){
	var isSure = confirm('确认删除此配置项么?');
	if(!isSure)
		return;
	var tr = $(obj).parent().parent();
	var tds=tr.children();
	if(tr.data("isNew")==true){
		tr.detach();
		return;
	}
	$.ajax({
		url : "admin/system/config/delete",
		type : 'POST',
		dataType : 'text',
		timeout : 2000,
		loader:"",
		context:tr,
		data:jQuery.param({"key":$(tds[0]).data("ori_data")}),
		error:function(){
			alert("删除失败");
		},
		success:function(txt){
			if (txt!='200'){
				alert(txt);
				return;
			}
			this.detach();
		}
	});
}